package org.maven.dependencybrowser.gui;
/**********************************************************************
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

Contributors:

**********************************************************************/
import org.maven.dependencybrowser.implementations.IProgressMeter;
import org.maven.dependencybrowser.model.Artifact;

import javax.swing.*;
import java.io.File;

public class ProgressMeter implements IProgressMeter
{

    private final JLabel label;

    public ProgressMeter(JLabel label)
    {
        this.label = label;
    }

    public JLabel getLabel()
    {
        return this.label;
    }

    private void report(String message)
    {
        SwingUtilities.invokeLater(new ProgressUpdateThread(message));
    }

    public void resolving(Artifact artifact)
    {
        report("resolving: " + artifact.getId());
    }

    public void scanning(File pomFile)
    {
        report("scanning: " + pomFile.getPath());
    }

    public void adding(File pomFile)
    {
        report("adding: " + pomFile.getPath());
    }

    public void error(Exception e)
    {
        report("error [" + e.getClass().getName() + "] " + e.getMessage());
    }

    public void ready()
    {
        report("ready");
    }

    public void snapshotComplete()
    {
        report("snapshot complete");
    }

    private class ProgressUpdateThread implements Runnable
    {

        private String message;

        public ProgressUpdateThread(String message)
        {
            this.message = message;
        }

        public void run()
        {
            label.setText(message);
        }

    }

}
